package com.itheima.fanxing;

import com.sun.jdi.ArrayReference;

import javax.lang.model.element.NestingKind;
import java.util.ArrayList;

/*
泛型通配符
 */
public class Demo05 {


    public static void main(String[] args) {
      /*  ArrayList<Object> objects = new ArrayList<>();
        objects.add(123);
        objects.add("abc");
        objects.add(true);
        */
     /*   ArrayList<?> list = new ArrayList<>();
        list.add(123);
        list.add(true);
        list.add("");*/
        ArrayList<Integer> list = new ArrayList<>();
        list.add(123);
        list.add(456);
        list.add(789);
        list.add(110);
        printList(list);

        ArrayList<Double> doubles = new ArrayList<>();
        doubles.add(11.2);
        doubles.add(22.5);
        doubles.add(444.8);
        doubles.add(33.0);
        printList(doubles);
       /* ArrayList<String> list1 = new ArrayList<>();
        printList(list1);*/

        ArrayList<Object> objects = new ArrayList<>();
        objects.add(123);
        objects.add(true);
        objects.add("aaaa");
        objects.add(10.2);
        printList2(objects);
       /* printList2(list);
        printList2(doubles);*/

        ArrayList<Number> numbers = new ArrayList<>();
        numbers.add(123);
        numbers.add(12.555);
        printList(numbers);
        printList2(numbers);

        printList3(list);
        printList3(doubles);
        printList3(objects);
        printList3(numbers);


        ArrayList<Number> objects1 = new ArrayList<>();

    }

    //泛型统配符 只能在方法上使用
    //? extends 类型  封锁 上限  只能是这个类型的子类或者自己
    public static void printList(ArrayList<?extends Number> list) {
        System.out.println(list);
    }

    //? super 类型 封锁下限 只能是自己或自己的父类
    public static void printList2(ArrayList<? super Number> list){
        System.out.println(list);
    }
    //?  我也不知道 爱给啥就用啥
    public static void printList3(ArrayList<?> list){


        System.out.println(list);
    }




}
